nethackfandomcom-20200214-history
Source:NetHack 3.1.0/mkroom.h
Below is the full text to mkroom.h from the source code of NetHack 3.1.0. To link to a particular line, write [[NetHack 3.1.0/mkroom.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)mkroom.h 3.1 92/11/14 */ 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef MKROOM_H 6. #define MKROOM_H 7. 8. /* mkroom.h - types and structures for room and shop initialization */ 9. 10. struct mkroom { 11. schar lx,hx,ly,hy; /* usually xchar, but hx may be -1 */ 12. schar rtype; /* Type of room (zoo, throne, etc...) */ 13. schar rlit; /* is the room lit ? */ 14. schar doorct; /* Door count */ 15. schar fdoor; /* Index for the first door of the room */ 16. schar nsubrooms; /* Number of subrooms */ 17. boolean irregular; /* true if room is non-rectangular */ 18. struct mkroom *sbroomsMAX_SUBROOMS; /* Subrooms pointers */ 19. struct monst *resident; /* priest/shopkeeper/guard for this room */ 20. }; 21. 22. struct shclass { 23. const char *name; /* name of the shop type */ 24. char symb; /* this identifies the shop type */ 25. int prob; /* the shop type probability in % */ 26. schar shdist; /* object placement type */ 27. #define D_SCATTER 0 /* normal placement */ 28. #define D_SHOP 1 /* shop-like placement */ 29. #define D_TEMPLE 2 /* temple-like placement */ 30. struct itp { 31. int iprob; /* probability of an item type */ 32. int itype; /* item type: if >=0 a class, if < 0 a specific item */ 33. } iprobs5; 34. const char **shknms; /* list of shopkeeper names for this type */ 35. }; 36. 37. extern struct mkroom rooms(MAXNROFROOMS+1)*2; 38. extern struct mkroom* subrooms; 39. /* the normal rooms on the current level are described in rooms0..n for 40. * some n 41. * the vault, if any, is described by roomsn+1 42. * the next rooms entry has hx -1 as a flag 43. * there is at most one non-vault special room on a level 44. */ 45. 46. extern struct mkroom *dnstairs_room, *upstairs_room, *sstairs_room; 47. 48. extern coord doorsDOORMAX; 49. 50. /* values for rtype in the room definition structure */ 51. #define OROOM 0 /* ordinary room */ 52. #define COURT 2 /* contains a throne */ 53. #define SWAMP 3 /* contains pools */ 54. #define VAULT 4 /* contains piles of gold */ 55. #define BEEHIVE 5 /* contains killer bees and royal jelly */ 56. #define MORGUE 6 /* contains corpses, undead and ghosts */ 57. #define BARRACKS 7 /* contains soldiers and their gear */ 58. #define ZOO 8 /* floor covered with treasure and monsters */ 59. #define DELPHI 9 /* contains Oracle and peripherals */ 60. #define TEMPLE 10 /* contains a shrine */ 61. #define SHOPBASE 11 /* everything above this is a shop */ 62. #define ARMORSHOP 12 /* specific shop defines for level compiler */ 63. #define SCROLLSHOP 13 64. #define POTIONSHOP 14 65. #define WEAPONSHOP 15 66. #define FOODSHOP 16 67. #define RINGSHOP 17 68. #define WANDSHOP 18 69. #define TOOLSHOP 19 70. #define BOOKSHOP 20 71. #define UNIQUESHOP 21 /* shops here & above not randomly gen'd. */ 72. #define CANDLESHOP 21 73. #define MAXRTYPE 21 /* maximum valid room type */ 74. 75. /* Special type for search_special() */ 76. #define ANY_TYPE (-1) 77. #define ANY_SHOP (-2) 78. 79. #define NO_ROOM 0 /* indicates lack of room-occupancy */ 80. #define SHARED 1 /* indicates normal shared boundary */ 81. #define SHARED_PLUS 2 /* indicates shared boundary - extra adjacent- 82. * square searching required */ 83. 84. #define ROOMOFFSET 3 /* 85. * (levlxy.roomno - ROOMOFFSET) gives 86. * rooms[] index, for inside-squares and 87. * non-shared boundaries. 88. */ 89. 90. #define IS_ROOM_PTR(x) ((x) >= rooms && (x) < rooms + MAXNROFROOMS) 91. #define IS_ROOM_INDEX(x) ((x) >= 0 && (x) < MAXNROFROOMS) 92. #define IS_SUBROOM_PTR(x) ((x) >= subrooms && \ 93. (x) < subrooms + MAXNROFROOMS) 94. #define IS_SUBROOM_INDEX(x) ((x) > MAXNROFROOMS && (x) < (MAXNROFROOMS*2)) 95. #define ROOM_INDEX(x) ((x) - rooms) 96. #define SUBROOM_INDEX(x) ((x) - subrooms) 97. #define IS_LAST_ROOM_PTR(x) (ROOM_INDEX(x) nroom) 98. #define IS_LAST_SUBROOM_PTR(x) (!nsubroom || SUBROOM_INDEX(x) nsubroom) 99. 100. #endif /* MKROOM_H */ mkroom.h